home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / CSMP Digest / volume 3 / csmp-digest-v3-047 < prev    next >
Text File  |  1995-12-31  |  47KB  |  1,264 lines

  1. Received-Date: Tue, 26 Jul 1994 19:05:06 +0200
  2. From: pottier@clipper.ens.fr (Francois Pottier)
  3. Subject: csmp-digest-v3-047
  4. To: csmp-digest@ens.fr
  5. Date: Tue, 26 Jul 1994 19:05:02 +0200 (MET DST)
  6. X-Mailer: ELM [version 2.4 PL23]
  7. Mime-Version: 1.0
  8. Content-Type: text/plain; charset=ISO-8859-1
  9. Content-Transfer-Encoding: 8bit
  10. Errors-To: listman@ens.fr
  11. Reply-To: pottier@clipper.ens.fr
  12. X-Sequence: 50
  13.  
  14. C.S.M.P. Digest             Tue, 26 Jul 94       Volume 3 : Issue 47
  15.  
  16. Today's Topics:
  17.  
  18.         AIFF
  19.         Announcing Macintosh AIFF-based DSP Think C Toolbox
  20.         AppleEvent Question
  21.         Bug in MIDI.h (Universal Interface)
  22.         Full file path?
  23.         Looking for a friendly native component sample.
  24.         Newbie ?: Where to get good reference materials
  25.         Problem using FSpGet-SetFInfo
  26.         list of crossplatform OO (C++, Smalltalk) development tools
  27.  
  28.  
  29.  
  30. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  31. (pottier@clipper.ens.fr).
  32.  
  33. The digest is a collection of article threads from the internet newsgroup
  34. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  35. regularly and want an archive of the discussions.  If you don't know what a
  36. newsgroup is, you probably don't have access to it.  Ask your systems
  37. administrator(s) for details.  If you don't have access to news, you may
  38. still be able to post messages to the group by using a mail server like
  39. anon.penet.fi (mail help@anon.penet.fi for more information).
  40.  
  41. Each issue of the digest contains one or more sets of articles (called
  42. threads), with each set corresponding to a 'discussion' of a particular
  43. subject.  The articles are not edited; all articles included in this digest
  44. are in their original posted form (as received by our news server at
  45. nef.ens.fr).  Article threads are not added to the digest until the last
  46. article added to the thread is at least two weeks old (this is to ensure that
  47. the thread is dead before adding it to the digest).  Article threads that
  48. consist of only one message are generally not included in the digest.
  49.  
  50. The digest is officially distributed by two means, by email and ftp.
  51.  
  52. If you want to receive the digest by mail, send email to listserv@ens.fr
  53. with no subject and one of the following commands as body:
  54.     help                        Sends you a summary of commands
  55.     subscribe csmp-digest Your Name    Adds you to the mailing list
  56.     signoff csmp-digest            Removes you from the list
  57. Once you have subscribed, you will automatically receive each new
  58. issue as it is created.
  59.  
  60. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  61. Questions related to the ftp site should be directed to
  62. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  63. digest are available there.
  64.  
  65. Also, the digests are available to WAIS users.  To search back issues
  66. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  67. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  68.  
  69.  
  70. -------------------------------------------------------
  71.  
  72. >From elronx@athena.mit.edu (Elron A Yellin)
  73. Subject: AIFF
  74. Date: 8 Jul 1994 16:17:00 GMT
  75. Organization: Massachusetts Institute of Technology
  76.  
  77. Can anyone tell me the current standard for 
  78. the Audio Interchange File Format?  I've been
  79. having trouble finding the publication, and I 
  80. don't know when it was last updated.
  81. Any help would be much appreciated.
  82.  
  83. Elron A. Yellin
  84.  
  85. +++++++++++++++++++++++++++
  86.  
  87. >From Manuel Veloso <veloso@netcom.com>
  88. Date: Sat, 9 Jul 1994 18:55:29 GMT
  89. Organization: Ibex Productions
  90.  
  91. In article <2vju5s$kh2@senator-bedfellow.MIT.EDU> Elron A Yellin, elronx@athena.mit.edu
  92. writes:
  93. >Can anyone tell me the current standard for 
  94. >the Audio Interchange File Format?  I've been
  95. >having trouble finding the publication, and I 
  96. >don't know when it was last updated.
  97. >Any help would be much appreciated.
  98. >
  99.  
  100. This is from the audio FAQ, and probably will help. Both AIFF and
  101. AIFC are also documented in IM-6 (Sound Manager)
  102.  
  103. - ----------------------------------------------------------------------
  104. AIFF Format (Audio IFF) and AIFC
  105. - ------------------------------
  106.  
  107. This format was developed by Apple for storing high-quality sampled
  108. sound and musical instrument info; it is also used by SGI and several
  109. professional audio packages (sorry, I know no names).  An extension,
  110. called AIFC or AIFF-C, supports compression (see the last item below).
  111.  
  112. I've made a BinHex'ed MacWrite version of the AIFF spec (no idea if
  113. it's the same text as mentioned below) available by anonymous ftp from
  114. ftp.cwi.nl [192.16.184.180]; the file is /pub/audio/AudioIFF1.2.hqx.
  115. But you may be better off with the AIFF-C specs, see below.
  116.  
  117. Mike Brindley (brindley@ece.orst.edu) writes:
  118.  
  119. "The complete AIFF spec by Steve Milne, Matt Deatherage (Apple) is
  120. available in 'AMIGA ROM Kernal Reference Manual: Devices (3rd Edition)'
  121. 1991 by Commodore-Amiga, Inc.; Addison-Wesley Publishing Co.; 
  122. ISBN 0-201-56775-X, starting on page 435 (this edition has a charcoal
  123. grey cover).  It is available in most bookstores, and soon in many
  124. good librairies."
  125.  
  126. According to Mark Callow (msc@sgi.com):
  127.  
  128. A PostScript version of the AIFF-C specification is available via
  129. anonymous ftp on FTP.SGI.COM (192.48.153.1) as /sgi/aiff-c.9.26.91.ps.
  130.  
  131. ---------------------------
  132.  
  133. >From bdenckla@husc10.harvard.edu (Benjamin Denckla)
  134. Subject: Announcing Macintosh AIFF-based DSP Think C Toolbox
  135. Date: 11 Jul 1994 19:03:46 GMT
  136. Organization: Harvard University, Cambridge, MA
  137.  
  138. Now available from ftp.cs.jhu.edu in directory "pub/dsp":
  139.  
  140. AIFF-based DSP C Framework
  141.  
  142. This archive contains a Macintosh Think C library which provides a
  143. framework in which user-written C functions which process the data in AIFF
  144. files may be run.  The library contains main() and deals with all aspects
  145. of AIFF file handling, allowing the user to concentrate on his/her
  146. processing algorithm by writing only a small "plug-in" processing module
  147. with very short development time.  The library uses a block-processing
  148. strategy in order to reduce the function-call overhead when the
  149. user-written processing function is called.  The block-processing approach
  150. is also necessary because the large size of many AIFF files makes them
  151. impossible to load entirely into memory. 
  152.  
  153. The framework calls three user-written functions in the course of its 
  154. execution.  First it calls the user-written initialization function 
  155. init_process(), which would typically be used for tasks such as the setup 
  156. of lookup tables.  Then it repeatedly calls the user-written processing 
  157. function process_samdat(), each time placing a new block of data in the 
  158. buffer.  When the data has been exhausted, it calls the user-written 
  159. termination function term_process(), which would typically be used for 
  160. tasks such as freeing memory which the user had allocated in init_process().
  161.  
  162. Though the framework is designed for the processing of AIFF files where 
  163. an AIFF file is taken as input and an AIFF file is made as output, 
  164. through the setting of user-defined variables, the framework can be made 
  165. to take no input or make no output.  If the variable take_input is set to 
  166. zero, the framework will not make an attempt to open an input file.  This 
  167. mode is useful for tasks such as the generation of AIFF files by 
  168. algorithmic means.  If the variable make_output is set to zero, the 
  169. framework will not make an attempt to open an output file.  This mode is 
  170. useful for tasks such as the analysis of AIFF files, where the analysis 
  171. output goes to the screen or a non-AIFF file.
  172.  
  173. The framework exists in source form in the folder "framework source" and 
  174. in object code form as "framework.lib".  The source uses a few Think C 
  175. extensions to C, but I suspect that it could be ported to other compilers 
  176. or even other platforms without great difficulty as long as the 
  177. assumptions about the size of data types listed in "aiff.h" hold true.  
  178. If you want to link from the sources, the linkage required is specified 
  179. at the beginning of the file "aiff.c".  Linkage for the library is the 
  180. same except for the fact that aiff.c and interface.c need not be linked 
  181. since they are what the library contains.
  182.  
  183. Much more could be written about how to use the framework but time 
  184. constraints compel me to merely direct the reader to the examples in the 
  185. folder "example plug-in source" and to the source for the framework itself.
  186.  
  187. This project was funded in part by the Ford Foundation's project to 
  188. provide grants for undergraduate research at Harvard University.
  189.  
  190. Don't bother dowloading this document as a separate text file: it is 
  191. already included in the archive.
  192.  
  193. Ben Denckla
  194. bdenckla@husc.harvard.edu
  195. July 9, 1994
  196.  
  197.  
  198.  
  199. ---------------------------
  200.  
  201. >From Andrew_Bell@acd.org (Andrew Bell)
  202. Subject: AppleEvent Question
  203. Date: 06 Jul 1994 17:44:15 GMT
  204. Organization: Apple Corps of Dallas User Group
  205.  
  206. Hi. I'm writing an application which allows users to edit various aspects of
  207. their FC Settings Files. I've written the code for AppleEvents, and when you
  208. drag your settings file on my App, it works perfectly. My problem is this: I
  209. want my user to be greeted with a standard open dialog box if they didn't
  210. drag a file on my app. My code is set up like this:
  211.  
  212. Install Apple Events
  213. {Main Event Loop}
  214.  
  215. Is there any way I can execute some code if I'm not gonna receive an OpenDocs
  216. event? I'm coding this in Pascal.
  217.  
  218. Thanks in Advance,
  219. Andrew.
  220. andrewb@metronet.com        
  221.  
  222. +++++++++++++++++++++++++++
  223.  
  224. >From jwbaxter@olympus.net (John W. Baxter)
  225. Date: Wed, 06 Jul 1994 15:40:02 -0700
  226. Organization: Internet for the Olympic Peninsula
  227.  
  228. In article <893579165.3110756@acd.acd.org>, Andrew_Bell@acd.org wrote:
  229.  
  230. > Hi. I'm writing an application which allows users to edit various aspects of
  231. > their FC Settings Files. I've written the code for AppleEvents, and when you
  232. > drag your settings file on my App, it works perfectly. My problem is this: I
  233. > want my user to be greeted with a standard open dialog box if they didn't
  234. > drag a file on my app. My code is set up like this:
  235. > Install Apple Events
  236. > {Main Event Loop}
  237.  
  238. You should (barring some late-breaking additions) receive one of three
  239. events after your application is launched.  [Note:  I'm assuming you don't
  240. want to support System 6, too...if you do, see Inside Mac, where this is
  241. all spelled out.]
  242.  
  243.    'aevt'/'oapp':  "Your application has been double-clicked"
  244.    'aevt'/'odoc':  "You should open these documents"
  245.    'aevt'/'pdoc':  "You should print these documents" (Finder follows this
  246. with 'aevt'/'quit' if the user selected a doc and chose the Print command,
  247. and you weren't already running...you don't have to keep track of that bit
  248. of state information).
  249.  
  250.    So by that model, when you launch, you do the setup which is common
  251. among those three cases.  Then you wait for one of the events to come in,
  252. and handle it.  The 'oapp' means, in your case, put up the dialog (in
  253. other cases it means create an untitled document, or whatever).
  254.  
  255.    Note that two more possibilities have arisen recently:  you get
  256. launched and none of the three events arrives (you can time out and assume
  257. 'oapp' for that one, if you want to);  you get a no-op event in (I forget
  258. the class and ID).  That is the "none of the other three" case made
  259. explicit, and implies:  don't do anything until you're told...I'll get
  260. around to it sometime.
  261.  
  262.    --John
  263.  
  264. -- 
  265. John Baxter    Port Ludlow, WA, USA  [West shore, Puget Sound]
  266.    No hablo Intel.
  267.    jwbaxter@pt.olympus.net
  268.  
  269. +++++++++++++++++++++++++++
  270.  
  271. >From Mark Hanrek <hanrek@cts.com>
  272. Date: Thu, 7 Jul 1994 02:37:35 GMT
  273. Organization: The Information Workshop
  274.  
  275. In article <893579165.3110756@acd.acd.org> Andrew Bell,
  276. Andrew_Bell@acd.org writes:
  277.  
  278. > Hi. I'm writing an application which allows users to edit aspects of
  279. > their FC Settings Files. I've written code for AppleEvents, and when you
  280. > drag your settings on my App, it works perfectly. My problem is this: I
  281. > want my user to be greeted with a standard open dialog if they didn't
  282. > drag a file on my app. My code is set up like this:
  283. >
  284. > Install Apple Events
  285. > {Main Event Loop}
  286. >
  287. > Is there any way I can execute some code if I'm not gonna receive an 
  288. > OpenDocs event? I'm coding this in Pascal.
  289. >
  290. > Thanks in Advance,
  291. > Andrew.
  292. > andrewb@metronet.com        
  293.  
  294. Note that if your application does not receive one or more 'odoc' Apple
  295. events, it will receive an 'oapp' instead.  :)
  296.  
  297. Aha!!
  298.  
  299. Hope this helps.
  300.  
  301. Mark Hanrek
  302.  
  303. +++++++++++++++++++++++++++
  304.  
  305. >From jonpugh@netcom.com (Jon Pugh)
  306. Date: Thu, 7 Jul 1994 03:47:35 GMT
  307. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  308.  
  309. Andrew Bell (Andrew_Bell@acd.org) wrote:
  310. > Hi. I'm writing an application which allows users to edit various aspects of
  311. > their FC Settings Files. I've written the code for AppleEvents, and when you
  312. > drag your settings file on my App, it works perfectly. My problem is this: I
  313. > want my user to be greeted with a standard open dialog box if they didn't
  314. > drag a file on my app. My code is set up like this:
  315.  
  316. > Install Apple Events
  317. > {Main Event Loop}
  318.  
  319. > Is there any way I can execute some code if I'm not gonna receive an OpenDocs
  320. > event? I'm coding this in Pascal.
  321.  
  322. If you don't get an odoc, you will get an oapp.  Put up the dialog then.
  323.  
  324. Jon
  325.  
  326.  
  327. ---------------------------
  328.  
  329. >From setsu@lab2.yamaha.co.jp (Takashi Suzuki)
  330. Subject: Bug in MIDI.h (Universal Interface)
  331. Date: Thu, 7 Jul 1994 04:13:18 GMT
  332. Organization: 2nd dep. Electronics Development&Design Center YAMAHA, Japan.
  333.  
  334. I found a bug in MIDI.h (Universal Interface).
  335.  
  336. These lines :
  337. - -------------------------------- from here -------------------------------
  338. #if defined(powerc) || defined (__powerc)
  339. #pragma options align=mac68k
  340. #endif
  341. struct MIDIPortParams {
  342.     OSType      portID;     /*ID of port, unique within client*/
  343.     short       portType;   /*Type of port - input, output, time, etc.*/
  344.     short       timeBase;   /*refnum of time base, 0 if none*/
  345.     long        offsetTime; /*offset for current time stamps*/
  346.     Ptr         readHook;   /*routine to call when input data is valid*/
  347.     long        refCon;     /*refcon for port (for client use)*/
  348.     MIDIClkInfo initClock;  /*initial settings for a time base*/
  349.     Str255      name;       /*name of the port, This is a real live string, not a 
  350. ptr.*/
  351. };
  352. #if defined(powerc) || defined(__powerc)
  353. #pragma options align=reset
  354. #endif
  355. - -------------------------------- until here -------------------------------
  356.  
  357. should be someting like:
  358. - -------------------------------- from here -------------------------------
  359. typedef pascal short (*ReaderDefProcPtr)(MIDIPacketPtr myPacket, long myRefCon);
  360.  
  361. enum {
  362.     uppReaderDefProcInfo = kPascalStackBased
  363.                 | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  364.                 | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  365.                 | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  366. };
  367.  
  368. #if USESROUTINEDESCRIPTORS
  369. typedef UniversalProcPtr ReaderDefUPP;
  370.  
  371. #define NewReaderDefProc(userRoutine)           \
  372.                 (ReaderDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),
  373.                 uppReaderDefProcInfo, GetCurrentISA())
  374. #else
  375. typedef ReaderDefProcPtr ReaderDefUPP;
  376.  
  377. #define NewReaderDefProc(userRoutine)           \
  378.                 (ReaderDefUPP)(userRoutine)
  379. #endif
  380.  
  381.  
  382. #if defined(powerc) || defined (__powerc)
  383. #pragma options align=mac68k
  384. #endif
  385. struct MIDIPortParams {
  386.     OSType          portID;     /*ID of port, unique within client*/
  387.     short           portType;   /*Type of port - input, output, time, etc.*/
  388.     short           timeBase;   /*refnum of time base, 0 if none*/
  389.     long            offsetTime; /*offset for current time stamps*/
  390.     ReaderDefUPP    readHook;   /*routine to call when input data is valid*/
  391.     long            refCon;     /*refcon for port (for client use)*/
  392.     MIDIClkInfo     initClock;  /*initial settings for a time base*/
  393.     Str255          name;       /*name of the port, This is a real live string, not a 
  394. ptr.*/
  395. };
  396. #if defined(powerc) || defined(__powerc)
  397. #pragma options align=reset
  398. #endif
  399. - -------------------------------- until here -------------------------------
  400.  
  401. Without this modification, applications will run into debugger
  402. when they receive MIDI data.
  403.  
  404. -- T.Suzuki
  405.  
  406.  
  407. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  408.   Takashi Suzuki    2nd dep. Electronics Development & Design Center YAMAHA
  409.       _///_                 Email : setsu@lab2.yamaha.co.jp
  410.      (.)-(.)~               NIFTY : GAF03072@niftyserve.or.jp
  411.         o                   Tel   : +81-539-62-5335 ; Fax  :+81-539-62-5269
  412. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  413.  
  414. ---------------------------
  415.  
  416. >From jbeeghly@u.washington.edu (Jeff Beeghly)
  417. Subject: Full file path?
  418. Date: 9 Jul 1994 20:36:07 GMT
  419. Organization: University of Washington
  420.  
  421.  
  422. OK, I come from a unix & a DOS background, and I'm trying to learn MAC
  423. programming.  My latest battle has been with the Mac file system...
  424.  
  425.  
  426. OK, If I have the following drive structure:
  427.  
  428. Internal                                                ROOT DRIVE
  429.    |
  430.    |
  431.    ------Applications                                   Folder
  432.                 |
  433.                 |
  434.                 --------Adobe Photoshop                 Folder
  435.                                |
  436.                                |
  437.                                -------------Photoshop   Application
  438.  
  439. On the Unix side, I'd expect the file position structure to be
  440.  
  441. Internal/Applications/Adobe Photoshop/Photoshop
  442.  
  443. On the Mac, it would be 
  444.  
  445. Internal:Applications:Adobe Photoshop:Photoshop
  446.  
  447. Well, I'm using the following to call the Open Dialog
  448.  
  449. StandardFileReply reply;
  450. StandardGetFile(0L, -1, 0L, &reply);
  451.  
  452. In THINK Reference, it states that the StandardFileReply contains a 
  453. FSSpec variable called sfFile, which is made up of the following structure:
  454. FSSpec {
  455.     short vRefName;
  456.     long parID;
  457.     Str63 name;
  458. };
  459.  
  460.  
  461. Well, I know that reply.sfFile.name contains just the name of the file, 
  462. and if I under stand correctly, the root drive (or the volume reference) 
  463. is stored as a number, and the directory that the file was in is also 
  464. stored as a number.  OK, fine.  But how do I get the text of the location?
  465.  
  466. In other words, how can I use the vRefNum, parID, & name menbers to get 
  467. the string "Internal:Applications:Adobe Photoshop:Photoshop" ?
  468.  
  469.  
  470. Also, I cave a couple books on programming the Mac, but none of them 
  471. really talk about files on the Mac.  Other than Inside Mac, are there any 
  472. good books out there that cover this issue?
  473.  
  474.  
  475. +++++++++++++++++++++++++++
  476.  
  477. >From rmah@panix.com (Robert Mah)
  478. Date: Sat, 09 Jul 1994 18:26:21 -0500
  479. Organization: One Step Beyond
  480.  
  481. jbeeghly@u.washington.edu (Jeff Beeghly) wrote:
  482.  
  483. ) OK, I come from a unix & a DOS background, and I'm trying to learn
  484. ) MAC programming.  My latest battle has been with the Mac file system.
  485. ) ...
  486. ) Well, I know that reply.sfFile.name contains just the name of the
  487. ) file, and if I under stand correctly, the root drive (or the volume
  488. ) reference) is stored as a number, and the directory that the file was
  489. ) in is also stored as a number.  OK, fine.  But how do I get the text
  490. ) of the location?
  491. ) In other words, how can I use the vRefNum, parID, & name menbers to
  492. ) get the string "Internal:Applications:Adobe Photoshop:Photoshop"?
  493.  
  494. You should think carefully before using full pathnames in non-developer
  495. oriented applications.  Unlike UNIX and DOS, Mac users change their 
  496. volume, folder and file names and move files and folders around with
  497. abandon and wanton disregard for programmer's perconceptions.
  498.  
  499. If you're trying to save the file's location, you should REALLY think
  500. about using aliases instead.  One of the few times I can think of to use
  501. full pathnames is to pass it to the stdio fopen() function.
  502.  
  503. If you really do need to get the full path name, there is sample code 
  504. from Apple available on the developer CD's and at:
  505.  
  506.   ftp://ftp.apple.com/dts/mac/sc/snippets/files/
  507.  
  508. It's basically a matter of walking up the directory tree using repeated
  509. calls to _PBGetCatInfo.  Oh and remember, you could be running under
  510. A/UX so check before assuming ":" is the pathname delimiter.
  511.  
  512. Cheers,
  513. Rob
  514. _____________________________________________________________________
  515. Robert S. Mah    :  Macintosh software development  :    212.947.5607
  516. One Step Beyond  :      and network consulting      :  rmah@panix.com
  517.  
  518. +++++++++++++++++++++++++++
  519.  
  520. >From bhorling@mail.trincoll.edu (Bryan Horling)
  521. Date: Sat, 09 Jul 1994 19:51:00 -0500
  522. Organization: Trinity College
  523.  
  524. In article <rmah-0907941826210001@rmah.dialup.access.net>, rmah@panix.com
  525. (Robert Mah) wrote:
  526.  
  527. > jbeeghly@u.washington.edu (Jeff Beeghly) wrote:
  528. > ) OK, I come from a unix & a DOS background, and I'm trying to learn
  529. > ) MAC programming.  My latest battle has been with the Mac file system.
  530. > ) ...
  531. > ) Well, I know that reply.sfFile.name contains just the name of the
  532. > ) file, and if I under stand correctly, the root drive (or the volume
  533. > ) reference) is stored as a number, and the directory that the file was
  534. > ) in is also stored as a number.  OK, fine.  But how do I get the text
  535. > ) of the location?
  536. > ) 
  537. > ) In other words, how can I use the vRefNum, parID, & name menbers to
  538. > ) get the string "Internal:Applications:Adobe Photoshop:Photoshop"?
  539. > You should think carefully before using full pathnames in non-developer
  540. > oriented applications.  Unlike UNIX and DOS, Mac users change their 
  541. > volume, folder and file names and move files and folders around with
  542. > abandon and wanton disregard for programmer's perconceptions.
  543. > If you're trying to save the file's location, you should REALLY think
  544. > about using aliases instead.  One of the few times I can think of to use
  545. > full pathnames is to pass it to the stdio fopen() function.
  546. > If you really do need to get the full path name, there is sample code 
  547. > from Apple available on the developer CD's and at:
  548. >   ftp://ftp.apple.com/dts/mac/sc/snippets/files/
  549. > It's basically a matter of walking up the directory tree using repeated
  550. > calls to _PBGetCatInfo.  Oh and remember, you could be running under
  551. > A/UX so check before assuming ":" is the pathname delimiter.
  552.  
  553. Looking at this in reverse, how can I use a full pathname to access a file
  554. or folder location to save or read from?  I'm writing an on-line
  555. application form in which I'm going to have the results saved to a server
  556. on the network (we're currently grappling with mounting said server)
  557. without user intervention (so StandardPutFile won't work), and the path to
  558. this spot will always be the same.  I have yet to find an easy way to
  559. specify this path in a useable form, although Think Ref says that it can
  560. be done.  Does anyone have any suggestions?  Thanks.
  561.  
  562. > Cheers,
  563. > Rob
  564. > _____________________________________________________________________
  565. > Robert S. Mah    :  Macintosh software development  :    212.947.5607
  566. > One Step Beyond  :      and network consulting      :  rmah@panix.com
  567.  
  568. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  569.     --Bryan Horling--      | >>bhorling@mail.trincoll.edu<<
  570.     -Head Consultant-      |    Trinity College, #1720  
  571. -A valuble low fat source- |    300 Summit St  
  572. -of protein and vitamin C- |    Hartford, CT 06106-3100
  573. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-        
  574.  
  575. +++++++++++++++++++++++++++
  576.  
  577. >From rmah@panix.com (Robert Mah)
  578. Date: Sat, 09 Jul 1994 22:52:44 -0500
  579. Organization: One Step Beyond
  580.  
  581. bhorling@mail.trincoll.edu (Bryan Horling) wrote:
  582.  
  583. ) Looking at this in reverse, how can I use a full pathname to access
  584. ) a file or folder location to save or read from?  I'm writing an
  585. ) on-line application form in which I'm going to have the results
  586. ) saved to a server on the network (we're currently grappling with
  587. ) mounting said server) without user intervention (so StandardPutFile
  588. ) won't work), and the path to this spot will always be the same.  I
  589. ) have yet to find an easy way to specify this path in a useable
  590. ) form, although Think Ref says that it can be done.  Does anyone
  591. ) have any suggestions?  Thanks.
  592.  
  593. Use aliases.  Full aliases will automount AppleShare servers, and
  594. with the ARA extension, even dialup ARA servers before mounting
  595. server volumes.  Aliases are good.
  596.  
  597. Cheers,
  598. Rob
  599. _____________________________________________________________________
  600. Robert S. Mah    :  Macintosh software development  :    212.947.5607
  601. One Step Beyond  :      and network consulting      :  rmah@panix.com
  602.  
  603. +++++++++++++++++++++++++++
  604.  
  605. >From rkwee@ee.pdx.edu (Roland Kwee)
  606. Date: 9 Jul 1994 22:26:39 -0700
  607. Organization: (none)
  608.  
  609. jbeeghly@u.washington.edu (Jeff Beeghly) writes:
  610.  
  611. >OK, I come from a unix & a DOS background, and I'm trying to learn MAC
  612. >programming.  My latest battle has been with the Mac file system...
  613.  
  614. Same with me. I wrote code to obtain full path names like the Pascal
  615. example in New Inside Mac/Files (but in C, of course). In fact, I wrote
  616. a set of functions to hide the Mac-style file IDs and to simulate
  617. the Unix-way. This makes code much more portable. Of course, the real
  618. Mac-programmer never wants his/her code to be portable to, say, a PC,
  619. but it is still useful to port ANSI-C/Unix-compatible code to the Mac.
  620.  
  621. Please send me email if you want me to mail you my code (I like peer
  622. review of my code) or to post it in the newsgroup.
  623.  
  624. --Roland            email: RolandKwee@ACM.org
  625.  
  626. +++++++++++++++++++++++++++
  627.  
  628. >From d88-jwa@hemul.nada.kth.se (Jon Wdtte)
  629. Date: 11 Jul 1994 08:31:54 GMT
  630. Organization: The Royal Institute of Technology
  631.  
  632. In <bhorling-0907941951000001@spam.pc.trincoll.edu> bhorling@mail.trincoll.edu (Bryan Horling) writes:
  633.  
  634. >Looking at this in reverse, how can I use a full pathname to access a file
  635. >or folder location to save or read from?  I'm writing an on-line
  636.  
  637. 1) If the path is shorter than 256 characters, just call
  638.    FSpMakeFSSpec on the name with a 0 volume and directory ID.
  639.  
  640. 2) Else use NewAliasMinimalFromFullPath and the ResolveAlias on it.
  641.  
  642. >on the network (we're currently grappling with mounting said server)
  643. >without user intervention (so StandardPutFile won't work), and the path to
  644. >this spot will always be the same.  I have yet to find an easy way to
  645.  
  646. The easiest thing would be to have a preferences setting for
  647. where this "spot" is (check the snippet for getting a folder if
  648. you can't choose a file)
  649.  
  650. Then create an alias to it with NewAlias, and store the alias
  651. data in your preferences document. When the user starts, resolve
  652. the alias using ResolveAlias, and you will not only get an FSSpec
  653. for the alias target, you'll also get the server automatically
  654. mounted, for free.
  655.  
  656. Cheers,
  657.  
  658.                     / h+
  659. -- 
  660.  -- Jon W{tte, h+@nada.kth.se, Mac Software Engineer Deluxe --
  661.  
  662.     Hackers push all the right buttons.
  663.  
  664. ---------------------------
  665.  
  666. >From ramapo@crestone.ssd.kodak.com (Pete Hoch x39699)
  667. Subject: Looking for a friendly native component sample.
  668. Date: Thu, 7 Jul 1994 13:02:54 GMT
  669. Organization: Eastman Kodak Company
  670.  
  671. I am looking for an example or description of anything I need to do to
  672. make a component native.  It does not need to be a fat component I just
  673. need to know if there are any special things I need to do for a native
  674. component.  I have allready looked on the QuickTime 2.0 beta CD and I
  675. have found nothing.
  676.  
  677. Thanks,
  678. Pete
  679.  
  680.  
  681. +++++++++++++++++++++++++++
  682.  
  683. >From tgaul@halcyon.com (Troy Gaul)
  684. Date: Fri, 08 Jul 1994 00:27:08 -0700
  685. Organization: Infinity Systems
  686.  
  687. In article <CsKMww.6n8@newsserver.pixel.kodak.com>,
  688. ramapo@crestone.ssd.kodak.com (Pete Hoch x39699) wrote:
  689.  
  690. > I am looking for an example or description of anything I need to do to
  691. > make a component native.  It does not need to be a fat component I just
  692. > need to know if there are any special things I need to do for a native
  693. > component.  I have allready looked on the QuickTime 2.0 beta CD and I
  694. > have found nothing.
  695.  
  696. Look up technical note QT 05 - Component Manager version 3.0.  It
  697. describes how to do native and fat components.  
  698.  
  699. For development, I got a component working as an accelerated resource with
  700. CodeWarrior 3, and then I just used an old-style 'thng' resource format. 
  701. I had problems when trying to use the extended format with a MW-generated
  702. code resource, but those problems may have been related to including the
  703. wrong library file in the project (I had included the ColorSyncStubs
  704. library from CW3, but the version of ColorSync I had installed had the
  705. shared library named 'ColorSync', so there was a runtime linking error).
  706.  
  707. _troy
  708. //////// //////___Troy Gaul__________________________tgaul@halcyon.com___//
  709.   //    //      Infinity Systems ; Redmond, Washington                  //
  710.  //    //  //  Good news is just life's way of keeping you off balance //
  711. //    //////__________________________________________________________//
  712.  
  713. ---------------------------
  714.  
  715. >From paulw@crl.com (Paul Winterrowd)
  716. Subject: Newbie ?: Where to get good reference materials
  717. Date: 8 Jul 1994 09:46:58 -0700
  718. Organization: CRL Dialup Internet Access    (415) 705-6060  [login: guest]
  719.  
  720. The subject says it all.  The IM books I've looked at contain
  721. Pascal code and I code in C.  Is there a way to get these
  722. reference books with C code/function specifications as opposed
  723. to Pascal?  I've read the Mac Programming FAQ and have not
  724. found an adequate answer.
  725.  
  726. My main interest at this point is with Quickdraw; however, it
  727. appears like I'm going to have to order the IM: Imaging book
  728. as the local bookstore does not have this volume.  Also, it 
  729. appears to have been left off of the bookmark CD which came 
  730. with my new Develop subscription.  The IM: Overview reference 
  731. lists the Imaging volume as dealing with Quickdraw.  Are there 
  732. any other volumes that contain information on this portion of 
  733. the toolbox or does this one cover it all?
  734.  
  735. I've been told that a company will be coming out with the complete
  736. IM reference series on CD later this summer; however, I really
  737. need this information now and I don't know if they are going to
  738. do any better with providing C code examples.
  739.  
  740. Email replies are appreciated as I only read this newsgroup once
  741. or twice a week.
  742.  
  743. Thanks,
  744.  
  745. paulw@aha.com
  746.  
  747.  
  748. -- 
  749. - ---------------------------------------------------------------
  750. I only speak for myself.  
  751.  
  752.  
  753. +++++++++++++++++++++++++++
  754.  
  755. >From Mark Hanrek <hanrek@cts.com>
  756. Date: Mon, 11 Jul 1994 02:08:16 GMT
  757. Organization: The Information Workshop
  758.  
  759. In article <2vjvu2$iiu@crl.crl.com> Paul Winterrowd, paulw@crl.com writes:
  760.  
  761. > The subject says it all.  The IM books I've looked at contain
  762. > Pascal code and I code in C.  Is there a way to get these
  763. > reference books with C code/function specifications as opposed
  764. > to Pascal?  I've read the Mac Programming FAQ and have not
  765. > found an adequate answer.
  766. >
  767. > My main interest at this point is with Quickdraw; however, it
  768. > appears like I'm going to have to order the IM: Imaging book
  769. > as the local bookstore does not have this volume.  Also, it 
  770. > appears to have been left off of the bookmark CD which came 
  771. > with my new Develop subscription.  The IM: Overview reference 
  772. > lists the Imaging volume as dealing with Quickdraw.  Are there 
  773. > any other volumes that contain information on this portion of 
  774. > the toolbox or does this one cover it all?
  775. >
  776. > I've been told that a company will be coming out with the complete
  777. > IM reference series on CD later this summer; however, I really
  778. > need this information now and I don't know if they are going to
  779. > do any better with providing C code examples.
  780. >
  781. > Email replies are appreciated as I only read this newsgroup once
  782. > or twice a week.
  783. >
  784. > Thanks,
  785. >
  786. > paulw@aha.com
  787.  
  788.  
  789. Paul and other newbies,
  790.  
  791. Here is some "perspective" that will help save you loads of time...
  792.  
  793.  
  794. - ---- Pascal in Reference Documentation
  795.  
  796. Pascal is to a large degree a descendant of "algol", which is a language
  797. from the sixties that was widely accepted as a standard way of
  798. communicating "algorithms".  ( ALGOrithmic Language: algol )  It was a
  799. kind of a "language-independent langauge".
  800.  
  801. Pascal is being used in a similar way in Inside Mac.  An "algorithm" is
  802. being communicated when you see examples in Pascal.  It is ourselves who
  803. mistakenly think that it is should be useful as more than that, like
  804. "working code".  :)  I made the same mistake myself.
  805.  
  806. In fact, very little code that is shown in reference books actually works
  807. in the real world.  Even if examples were given in C, it would be little
  808. help. 
  809.  
  810. It is important to not attempt to write software from a reference book. 
  811.  
  812.  
  813.     Working from documentation is like 
  814.     reading about a dead fish out of water.
  815.  
  816.     Example source code takes you 
  817.     directly to the living aquarium.
  818.  
  819.  
  820. One has to have both in order to be successful.  
  821.  
  822. One form (reference docs) shows the given thing in isolation so that it
  823. can be understood, the other (source code) contains all the other
  824. real-world things that must be "around it" in order for it to actually
  825. work.
  826.  
  827. Also, when you think about it, what is the most perfect language for
  828. communicating how to write software?  Yes, "example source code", and in
  829. the language you can speak!
  830.  
  831. There is quite a difference between "statements", and "example source
  832. code", too.
  833.  
  834. At one point I did a close examination and quickly saw that there are few
  835. toolbox calls remaining where you can simply look it up in the book, type
  836. it into your program, and that's that.
  837.  
  838. An aquarium is a "system" of intertwined and interdependent things.  If
  839. just one element is missing, or even the pH is a little out of whack,
  840. it's a dead aquarium.
  841.  
  842.  
  843. - ---- Specific answer
  844.  
  845. You asked about QuickDraw.  As a seasoned Macintosh graphics programmer,
  846. I can tell you that this is a perfect case-in-point.  The documentation
  847. conveys only a fraction of what you must know.
  848.  
  849. In some areas, such as the proper way to handle color tables, especially
  850. between applications, there is little or no information whatsoever
  851. including example source code.
  852.  
  853. Questions about QuickDraw, GWorlds, and CopyBits get asked every single
  854. day in c.s.m.p., endlessly, because new programmers are left to fend for
  855. themselves, and unfortunately are not guided along like they could be
  856. with a gentle tractor beam.
  857.  
  858. Well, "tractor beam on" ...
  859.  
  860.  
  861. - ---- A Successful Strategy
  862.  
  863. New programmers have their choice of accepting the following strategy
  864. now, or realizing it is true way later, the hard way. :)
  865.  
  866. I say this because this isn't a time to be fooling around.  We
  867. desperately need all the Macintosh programmers we can get, and large
  868. numbers throw in the towel part way through because it becomes too much.  
  869.  
  870. More often than not, this is preventable.  We'd rather you remain in
  871. orbit, and not burn up re-entering the atmosphere. :)
  872.  
  873. Keep in mind that the programmer who finishes *first* wins all the toys,
  874. not the programmer who can handle the most complexity.  
  875.  
  876. Don't screw around with things that waste your time.  Be belligerent and
  877. demanding about "getting on with it" already! Sheesh!!  ( like that :)
  878.  
  879.  
  880. - ---- One word:  Resources
  881.  
  882. Success is all about "resources".  There are many equally essential
  883. resources, not just one. 
  884.  
  885. Have as many as you can "on tap", at your fingertips, or quickly
  886. accessible.  This is one basis upon which you will compete with other
  887. programmers.
  888.  
  889. All along the way, continuously accumulate resources -- download example
  890. source code, collect tidbits of info you can tell you'd never figure out
  891. in a million years, collect references to things you'll "wish you had
  892. saved when you came across it", etc.
  893.  
  894.  
  895. Essentials for success:
  896.  
  897.   * Access to the Internet, America Online, or CompuServe.
  898.  
  899.   * Become a "source code pack rat".
  900.  
  901.   * Get ftp access to "ftp.apple.com".  Quietly take full advantage
  902.     of this gold mine until you can afford your own CD player and
  903.     subscriptions.  The example source code "word" is available here,
  904.     and on the Developer CD.
  905.  
  906.   * Participate in an online programming forum regularly. The AOL
  907.     Development Forum is a great one for beginners if c.s.m.p. seems
  908.     inappropriate.  Also, you don't have to say a word, yet you'll
  909.     learn a ton of things subliminally, and allows you to feel
  910.     "connected" with what's happening at the same time. 
  911.  
  912.   * The "buddy system" is good for programming, too.
  913.  
  914.   * Remember that if you have trouble understanding something,
  915.     or great difficulty doing something simple, don't blame yourself.
  916.     We are still going through the phase where programmers have
  917.     yet to realize that they too can have development software as 
  918.     powerful and advanced as the software they create for their
  919.     clients or employers routinely every day.
  920.    
  921.   * Essential Reference Information:
  922.  
  923.       * Inside Mac ( paper books sure are handy )
  924.       * Think Reference ( even handier! )
  925.       * All three volumes of c.s.m.p digest
  926.         ( for all the undocumented things )
  927.  
  928.   * Wisdoms that give you competitive advantage...
  929.  
  930.       * You cannot assess how long things will take
  931.       * Don't allow your time to be wasted
  932.       * Stand on the shoulders of work already done
  933.       * Just say "no"
  934.  
  935.  
  936. - -----------------------------------------------------------
  937.  
  938. Only you know what is best for you.  Use this information to help
  939. increase your advantage.
  940.  
  941.  
  942. Hope this helps.
  943.  
  944.  
  945. Mark Hanrek
  946. The Information Workshop
  947.  
  948. ---------------------------
  949.  
  950. >From system@asuvax.eas.asu.edu (Marc Lesure)
  951. Subject: Problem using FSpGet-SetFInfo
  952. Date: Fri, 8 Jul 1994 08:19:59 GMT
  953. Organization: Arizona State University
  954.  
  955. I'm having problems using FSpGetFInfo and FSpSetFInfo on a folder.  They
  956. always return an error of -43 (fnfErr).  IM VI states that these functions
  957. can be used on files or folders.  Here is my code segment, could some kind
  958. soul show me what's wrong.
  959.  
  960. OSErr err;
  961. FSSpec mfs;
  962. int vRef;
  963. long dirID, newdID;
  964. FInfo fndrInfo;
  965.  
  966. /* get system folder */
  967. err=FindFolder(kOnSystemDisk,kSystemFolderType,kDontCreateFolder,&vRef,&dirID);
  968.  
  969. /* get MyFolder */
  970. err=FSMakeFSSpec(vRef,dirID,"\pMyFolder",&mfs);
  971.  
  972. /* create it if it doesn't exist */
  973. if(err==fnfErr)
  974.     err=FSpDirCreate(&mfs,smSystemScript,&newdID);
  975.  
  976. err=FSpGetFInfo(&mfs,&fndrInfo);
  977. ...
  978. err=FSpSetFInfo(&mfs,&fndrInfo);
  979.  
  980. The FSpGet/SetFInfo calls fails regardless if the folder preexisted or if
  981. the code creates it.  It doesn't seem to matter if fndrInfo is defined as
  982. FInfo or DInfo.
  983.  
  984. Thanks for any help!!!
  985.  
  986. - ---------------------------------------------------------------------
  987. Marc Lesure / Arizona State University / Tempe, AZ
  988. "Between the world of men and make-believe, I can be found..."
  989. "False faces and meaningless chases, I travel alone..."
  990. "And where do you go when you come to the end of your dream?"
  991.  
  992. UUCP:       ...!ncar!noao!asuvax!lesure  
  993. Internet:   lesure@asuvax.eas.asu.edu
  994.  
  995. +++++++++++++++++++++++++++
  996.  
  997. >From mclow@coyote.csusm.edu (Marshall Clow)
  998. Date: 8 Jul 1994 09:24:40 -0700
  999. Organization: California State University San Marcos
  1000.  
  1001. Marc Lesure (system@asuvax.eas.asu.edu) wrote:
  1002. >I'm having problems using FSpGetFInfo and FSpSetFInfo on a folder.  They
  1003. >always return an error of -43 (fnfErr).  IM VI states that these functions
  1004. >can be used on files or folders.  Here is my code segment, could some kind
  1005. >soul show me what's wrong.
  1006.  
  1007. [ code deleted ]
  1008. I believe that IM lies on this one. Use GetCatInfo instead.
  1009.  
  1010. Marshall CLow
  1011. Aladdin Systems
  1012. mclow@san_marcos.csusm.edu
  1013.  
  1014.  
  1015. +++++++++++++++++++++++++++
  1016.  
  1017. >From jumplong@aol.com (Jump Long)
  1018. Date: 10 Jul 1994 02:11:08 -0400
  1019. Organization: America Online, Inc. (1-800-827-6364)
  1020.  
  1021. In article <CsM4HC.z0@asuvax.eas.asu.edu>, system@asuvax.eas.asu.edu (Marc
  1022. Lesure) writes:
  1023.  
  1024. >I'm having problems using FSpGetFInfo and FSpSetFInfo on a folder.
  1025.  
  1026. Both Inside Macintosh Volume VI and Inside Macintosh: Files are wrong.
  1027. FSpGetFInfo and FSpSetFInfo work only on files - they do not work on
  1028. directories. The following code (from the soon to be released version 1.2
  1029. of MoreFiles) does what you want.
  1030.  
  1031. - Jim Luther
  1032.  
  1033. /*************************************************************************
  1034. ****/
  1035.  
  1036. pascal OSErr GetDInfo(short vRefNum,
  1037.         long dirID,
  1038.         StringPtr name,
  1039.         DInfo *fndrInfo)
  1040. {
  1041.  CInfoPBRec pb;
  1042.  OSErr error;
  1043.  
  1044.  pb.dirInfo.ioNamePtr = name;
  1045.  pb.dirInfo.ioVRefNum = vRefNum;
  1046.  pb.dirInfo.ioDrDirID = dirID;
  1047.  pb.dirInfo.ioFDirIndex = 0; /* use ioNamePtr and ioDrDirID */
  1048.  error = PBGetCatInfoSync(&pb);
  1049.  if ( error == noErr )
  1050.  {
  1051.   if ( (pb.dirInfo.ioFlAttrib & ioDirMask) != 0 )
  1052.    /* it's a directory, return the DInfo */
  1053.    *fndrInfo = pb.dirInfo.ioDrUsrWds;
  1054.   else
  1055.    /* oops, a file was passed */
  1056.    error = dirNFErr;
  1057.  }
  1058.  return ( error );
  1059. }
  1060.  
  1061. /*************************************************************************
  1062. ****/
  1063.  
  1064. pascal OSErr FSpGetDInfo(const FSSpec *spec,
  1065.         DInfo *fndrInfo)
  1066. {
  1067.  return ( GetDInfo(spec->vRefNum, spec->parID, (StringPtr)spec->name,
  1068. fndrInfo) );
  1069. }
  1070.  
  1071. /*************************************************************************
  1072. ****/
  1073.  
  1074. pascal OSErr SetDInfo(short vRefNum,
  1075.         long dirID,
  1076.         StringPtr name,
  1077.         const DInfo *fndrInfo)
  1078. {
  1079.  CInfoPBRec pb;
  1080.  OSErr error;
  1081.  
  1082.  pb.dirInfo.ioNamePtr = name;
  1083.  pb.dirInfo.ioVRefNum = vRefNum;
  1084.  pb.dirInfo.ioDrDirID = dirID;
  1085.  pb.dirInfo.ioFDirIndex = 0; /* use ioNamePtr and ioDrDirID */
  1086.  error = PBGetCatInfoSync(&pb);
  1087.  if ( error == noErr )
  1088.  {
  1089.   if ( (pb.dirInfo.ioFlAttrib & ioDirMask) != 0 )
  1090.   {
  1091.    /* it's a directory, set the DInfo */
  1092.    pb.dirInfo.ioDrUsrWds = *fndrInfo;
  1093.    pb.dirInfo.ioDrDirID = dirID;
  1094.    error = PBSetCatInfoSync(&pb);
  1095.   }
  1096.   else
  1097.    /* oops, a file was passed */
  1098.    error = dirNFErr;
  1099.  }
  1100.  return ( error );
  1101. }
  1102.  
  1103. /*************************************************************************
  1104. ****/
  1105.  
  1106. pascal OSErr FSpSetDInfo(const FSSpec *spec,
  1107.         const DInfo *fndrInfo)
  1108. {
  1109.  return ( SetDInfo(spec->vRefNum, spec->parID, (StringPtr)spec->name,
  1110. fndrInfo) );
  1111. }
  1112.  
  1113. /*************************************************************************
  1114. ****/
  1115.  
  1116.  
  1117. ---------------------------
  1118.  
  1119. >From craig@gpu.utcc.utoronto.ca (Craig Hubley)
  1120. Subject: list of crossplatform OO (C++, Smalltalk) development tools
  1121. Date: Fri, 8 Jul 1994 00:39:31 GMT
  1122. Organization: Craig Hubley & Associates
  1123.  
  1124. Our recent search for crossplatform GUI development tools yielded the following
  1125. possibilities (in no particular order).  Focus was on Windows+Mac portability
  1126. as that was the immediate problem.  Some toolkits, notably XVT, C++/Views,
  1127. ObjectWorks/C++, etc., cover OS/2 and Unix as well.  Many sources were used
  1128. but the search was not exhaustive.  Some things we have only partial pointers
  1129. to.  Would appreciate help filling them out.  If you mail directly to me I
  1130. will incorporate this information into the table (without verifying it).
  1131. Most important would be 1-800 numbers, email addresses, and pointers to
  1132. review articles in major publications (e.g. Byte, PC Week, Computer Shopper...)
  1133.  
  1134. We focused on those usable from C++ or Smalltalk which can be extended using
  1135. these (almost-standard, multivendor now) languages:
  1136.  
  1137. product        vendor
  1138. - -----        ------
  1139. InMark        InMark???
  1140. WNDX         WNDX Corp., Calgary, Alberta Canada (reviewed in Byte 1/94)
  1141. OpenGUI        Guild Products Inc., Belmont CA
  1142. ObjectViews    Quest Windows Corp, Santa Clara CA
  1143. Aspect        Open Inc., Colorado Springs CO 
  1144. ObjectWorks/C++    ParcPlace Systems, (408) area code
  1145. zApp        Zinc                (reviewed in Byte 1/94)
  1146. OpenDoc/MacApp    Apple (supposedly soon to be released)
  1147. win32s        Microsoft (supposedly crossplatform as of Visual C++ 2.0)
  1148. OWL 2.0        Borland (supposedly available for Macintosh
  1149. Appware        Novell (Borland requires this I think)
  1150.   Foundation
  1151.   UI Series
  1152.   VisualAppBuilder
  1153. Galaxy        Visix (expensive)
  1154. ???        Neuron Data (expensive)
  1155. XVT        XVT (reviewed in Byte 1/94) - called 'easiest for C programmers'
  1156. Power++        XVT (very new)
  1157. C++/Views    Liant, (508) area code, more like a Smalltalk library in C++
  1158.         (also reviewed in Byte 1/94) - called the 'most disciplined'
  1159.  
  1160. We weren't really looking at this but for database libraries we turned up:
  1161.  
  1162. FoxPro        Microsoft (can build DLLs to handle DB, and use from C/C++)
  1163. NeoAccess    NeoLogic, San Francisco, CA (a C++ database library)
  1164. CommonBase    ImageSoft
  1165. ...
  1166.  
  1167. For Smalltalk we turned up:
  1168.  
  1169. Smalltalk/V Mac    Digitalk
  1170. Smalltalk/V Win    Digitalk
  1171. ENFIN        Easel (app builder)
  1172. Subpanes    ObjectShare (app builder)
  1173. Smalltalk-80    ParcPlace
  1174. VisualWorks    ParcPlace (app builder)
  1175. VisualAge    IBM (OS/2 only, Windows versions promised, includes app builder)
  1176.  
  1177. We weren't looking at graphics tools.
  1178.  
  1179. Some products, like Symantec's Bedrock and Borland's thing, seem not to exist
  1180. if you contact the companies directly.  Possibly they were vaporware only.  In
  1181. fact Symantec definitely folded their work into OpenDoc and MacApp recently.
  1182.  
  1183. If you turn up *anything* not on this list that is usable from C++ or Smalltalk
  1184. I would appreciate hearing about it.  Other issues possibly worth discussing
  1185. (in the appropriate forums) would be:
  1186.  
  1187. - should there be a group devoted exclusively to platform-independent software
  1188.   development (i.e. where the developer is targetting at least 2 or 3 user
  1189.   platforms) - out of self-interest I would only be interested in tools that
  1190.   generate code, or produce modules that can be linked into, C++ or Smalltalk.
  1191.  
  1192.   (Frankly I think the world needs another single-vendor language, OO or not, 
  1193.   like a hole in its head, and would specifically exclude these from the group.
  1194.   Your mileage may vary - I am not interested in discussing this issue at all
  1195.   so if you feel differently *you* start the group).
  1196.  
  1197. - would someone be interested in expanding this list and making it a FAQ on
  1198.   such a group ?  I have little time for this but might consider it if someone
  1199.   else took over administrative responsibilities.
  1200.  
  1201. For the moment I would be willing to gather and recirculate experiences of
  1202. those doing real world commercial product development using any of the above.
  1203. This too could eventually make it into a FAQ.
  1204.  
  1205. Thanks,
  1206.  
  1207.   Craig Hubley -- Consultants in object-oriented technology, languages,  --
  1208.   Craig Hubley & Associates -- user interface design, user productivity  --
  1209.   craig@utcc.Utoronto.CA    -- and financially responsive methodologies  --
  1210.   Seventy Eaton Avenue, Toronto, Ontario, Canada M4J 2Z5 -- 416-778-6136 
  1211.  
  1212.  
  1213. -- 
  1214.   Craig Hubley -- Consultants in object-oriented technology, languages,  --
  1215.   Craig Hubley & Associates -- user interface design, user productivity  --
  1216.   craig@utcc.Utoronto.CA    -- and financially responsive methodologies  --
  1217.   Seventy Eaton Avenue, Toronto, Ontario, Canada M4J 2Z5 -- 416-778-6136 
  1218.  
  1219. +++++++++++++++++++++++++++
  1220.  
  1221. >From MorrisGC@ccmail.apldbio.com (George Morris)
  1222. Date: 8 Jul 94 19:18:04 GMT
  1223. Organization: Perkin Elmer, Applied Biosystems Div.
  1224.  
  1225. In article <CsLJ5w.F55@gpu.utcc.utoronto.ca>, craig@gpu.utcc.utoronto.ca
  1226. (Craig Hubley) wrote:
  1227.  
  1228. > Our recent search for crossplatform GUI development tools yielded the 
  1229. > following possibilities (in no particular order)
  1230.  
  1231. [material deleted]
  1232. > - would someone be interested in expanding this list and making it a FAQ on
  1233. >   such a group ?  I have little time for this but might consider it if someone
  1234. >   else took over administrative responsibilities.
  1235.  
  1236. As regards cross-platform development systems there already exists an
  1237. excellent list of these systems with prices, summaries, user comments,
  1238. etc. in the PIGUI (platform-independent Graphical User Interface) FAQ. 
  1239. This is available via anonymous FTP at rtfm.mit.edu (At least that is
  1240. where I got it). I believe it is also posted to the following newsgroups;
  1241. comp.windows.misc, comp.answers,news.answers.
  1242.  
  1243. Hope this helps
  1244.  
  1245. George Morris
  1246. MorrisGC@ccmail.apldbio.com
  1247.  
  1248. ---------------------------
  1249.  
  1250. End of C.S.M.P. Digest
  1251. **********************
  1252.  
  1253.  
  1254.